package queue

import "context"

type (
	IQueueDriver interface {
		Connect() error                                                                                                                  // 连接到消息队列服务器
		Close() error                                                                                                                    // 关闭连接释放资源
		Topic(topic string) error                                                                                                        // 创建主题
		Publish(ctx context.Context, topic string, message []byte, delay int) error                                                      // 发送消息到指定队列
		Subscribe(ctx context.Context, topic string, opt Options, callback func(ctx context.Context, channel <-chan QueueMessgae)) error // 消费队列消息，返回消息通道
		Ack(ctx context.Context, q IQueue, qm QueueMessgae)                                                                              // Ack 确认
		Nack(ctx context.Context, q IQueue, qm QueueMessgae)                                                                             // Nack 未确认，会重试
		Reject(ctx context.Context, q IQueue, qm QueueMessgae)                                                                           // Reject 拒绝，进入死信队列                                                                                 // Nack
	}
)
